// // 放置全局指令
// import Vue from 'vue'
// import store from '@/store'
// // 1、熟悉一下自定义指令的语法

// // 2、编写一个无逻辑但是可以运行的自定义指令
// Vue.directive('checkBtn', {
//   // 指令绑定的元素渲染完毕之后立即执行
//   inserted(el, binding){
//     // el:指令绑定的元素对象
//     // binding:是一个很大的对象，里面有一个value属性，那就代表是指令等于号后面的值 v-if=""
//     console.log(el, binding.value)
//     // 拿到el,拿到value，配合权限数据，做按钮显示隐藏
//     // 控制逻辑：判断当前的按钮自身的权限标识能否在后端返回的points中找到，如果找到就显示
//     // 1、权限数据points
//     const points = store.state.user.userInfo.roles.points
//     // 2、按钮自身的标识binding.value
//     if (!points.includes(binding.value)) {
//       // vue的移除方法
//       el.remove()
//       // 找到当前绑定指令的元素的父节点，然后再移除当前的子节点
//       // el.parentNode.removeChild(el)
//     }
//   }})

// 3、添加按钮的权限控制逻辑
// 4、思考一下如何把当前的写法改成插件的写法
// import PageTools from '@/components/PageTools/index.vue'
// import UploadImg from '@/components/UploadImg/index.vue'
// import Vue from 'vue'
import store from '@/store'
const derictives = {
  install(Vue) {
    Vue.directive('checkBtn', {
      // 指令绑定的元素渲染完毕之后立即执行
      inserted(el, binding){
        // el:指令绑定的元素对象
        // binding:是一个很大的对象，里面有一个value属性，那就代表是指令等于号后面的值 v-if=""
        // console.log(el, binding.value)
        // 拿到el,拿到value，配合权限数据，做按钮显示隐藏
        // 控制逻辑：判断当前的按钮自身的权限标识能否在后端返回的points中找到，如果找到就显示
        // 1、权限数据points
        const points = store.state.user.userInfo.roles.points
        // 2、按钮自身的标识binding.value
        if (!points.includes(binding.value)) {
          // vue的移除方法
          el.remove()
          // 找到当前绑定指令的元素的父节点，然后再移除当前的子节点
          // el.parentNode.removeChild(el)
        }
      }})
    // 拿到了Vue，那就可以使用Vue.component方法了
  }
}

// 2、插件的注册  实例化之前  调用vue.use(plugin)
// 注意：一旦我们调用了Vue.use(plugin)相当于自动执行了 插件对象内部的install方法，并把Vue构造函数当成实参传入
export default derictives



// 函数定义法写插件---》函数本身就会被当成install方法自动执行
